package com.ruoyi.examation.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.examation.domain.ExamRegistration;
import com.ruoyi.examation.vo.ExamRegistrationVo;
import com.ruoyi.examation.vo.ExamRegistrationUserVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 考试报名Mapper接口
 *
 * @author Tellsea
 * @date 2025-09-28
 */
public interface ExamRegistrationMapper extends BaseMapper<ExamRegistration> {

    Page<ExamRegistrationVo> queryList(Page<?> page, @Param("entity") ExamRegistrationVo entity);

    List<ExamRegistrationVo> queryList(@Param("entity") ExamRegistrationVo entity);

    ExamRegistrationVo queryById(@Param("id") Long id);

    /**
     * 查询报名人员列表（包含用户信息）
     *
     * @param examId 考试ID
     * @param venueId 考场ID
     * @return
     */
    List<ExamRegistrationUserVo> queryRegistrationUsers(@Param("examId") Long examId, @Param("venueId") Long venueId);

    /**
     * 根据考试ID和考试时间ID查询报名人员列表（包含用户信息）
     *
     * @param examId 考试ID
     * @param scheduleId 考试时间ID
     * @return
     */
    List<ExamRegistrationUserVo> queryRegistrationUsersBySchedule(@Param("examId") Long examId, @Param("scheduleId") Long scheduleId);

    /**
     * 根据考试ID和考试时间ID分页查询报名人员列表（包含用户信息）
     *
     * @param page 分页对象
     * @param examId 考试ID
     * @param scheduleId 考试时间ID
     * @return
     */
    Page<ExamRegistrationUserVo> queryRegistrationUsersBySchedulePage(Page<?> page, @Param("examId") Long examId, @Param("scheduleId") Long scheduleId);

}
